package com.kakarote.hrm.entity.VO;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Set;

@Data
public class DeptVO {

    @ApiModelProperty(value = "部门id")
    private Long deptId;

    @ApiModelProperty(value = "父级ID 顶级部门为0")
    private Long parentId;

    @ApiModelProperty(value = "父级组织")
    private String pName;

    @ApiModelProperty(value = "1 公司 2 部门")
    private Integer deptType;

    @ApiModelProperty(value = "部门名称")
    private String name;

    @ApiModelProperty(value = "部门编码")
    private String code;

    @ApiModelProperty(value = "部门负责人ID")
    private Long mainEmployeeId;

    @ApiModelProperty(value = "分管领导")
    private String leaderEmployeeId;

    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    @TableField(fill = FieldFill.INSERT)
    private Long createUserId;



    @ApiModelProperty("分管领导")
    private String leadEmployeeName;

    @ApiModelProperty("部门负责人")
    private String mainEmployeeName;

    @ApiModelProperty("在职人数")
    private Integer allNum = 0;

    @ApiModelProperty("全职人数")
    private Integer fullTimeNum = 0;

    @ApiModelProperty("非全职人数")
    private Integer nuFullTimeNum = 0;

    @ApiModelProperty("本部门在职人数")
    private Integer myAllNum = 0;

    @ApiModelProperty("本部门全职人数")
    private Integer myFullTimeNum = 0;

    @ApiModelProperty("本部门非全职人数")
    private Integer myNuFullTimeNum = 0;

    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private List<DeptVO> children;

    @ApiModelProperty(value = "部门层级")
    private Integer level;

    @ApiModelProperty(value = "部门排序号")
    private Long sortId;


    @ApiModelProperty(value = "实有人数")
    private Long totalNum;

    @ApiModelProperty(value = "正处编制人数")
    private Long sectionChiefPreparation;

    @ApiModelProperty(value = "正处现配备人数")
    private Long sectionChiefNum;

    @ApiModelProperty(value = "副处编制人数")
    private Long deputySectionChiefPreparation;

    @ApiModelProperty(value = "副处现配备人数")
    private Long deputySectionChiefNum;

    @ApiModelProperty(value = "正科编制人数")
    private Long directorPreparation;

    @ApiModelProperty(value = "正科现配备人数")
    private Long directorNum;

    @ApiModelProperty(value = "副科编制人数")
    private Long deputyDirectorPreparation;

    @ApiModelProperty(value = "副科现配备人数")
    private Long deputyDirectorNum;

    @ApiModelProperty(value = "在编人数")
    private Long underOrganization;

    @ApiModelProperty(value = "缺编人数")
    private Long lackPreparation;

    @ApiModelProperty(value = "机构板块 1-集团总部 2-公用事业 3-金融投资 4-现代农业 5-工程地产 6-其他板块")
    private Integer orgSector;

    @ApiModelProperty(value = "单位性质 1-合并报表企业 2-托管企业 3-其他")
    private Integer unitProperties;

    @ApiModelProperty(value = "组织性质 1-全资 2-控股 3-参股 4-集体所有制")
    private Integer orgType;

    @ApiModelProperty(value = "部门员工编号")
    private Set<Long> empIds;

    @ApiModelProperty(value = "导出部门编号集合")
    private List<Long> deptIdList;

    @ApiModelProperty(value = "劳动合同工人数")
    private int contractTotal;

    @ApiModelProperty(value = "劳务派遣人数")
    private int dispatchTotal;

    @ApiModelProperty(value = "劳务外包人数")
    private int outsourceTotal;

    @ApiModelProperty(value = "临时工人数")
    private int temporaryTotal;

    @ApiModelProperty(value = "退休返聘人数")
    private int retireTotal;

    @ApiModelProperty(value = "外部董事人数")
    private int externalTotal;
}
